﻿<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Validaciones.aspx.cs" Inherits="Temp_Validaciones" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
<script type="text/javascript">

    function ValidaCampoTipo(campo, tipo) {

        var patron     
        switch (tipo)
            {
            case "Fecha": patron = /^([0-9]|[0,1,2][0-9]|3[0,1])\/([\d]|1[0,1,2])\/\d{4}$/; break;
            case "Ruc" : patron=/^\d{11}/; break;
            case "Dni" : patron=/^\d{8}/; break;
            case "Email" : patron=/^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$/; break;
            case "Periodo" : patron=/^([\d]|1[0,1,2])\/\d{4}$/; break;
            case "Digito" : patron=/\d/; break;
            case "Entero" : patron=/([\+\-])?\d/; break;
            case "EnteroPositivo" : patron=/\+?\d/; break;
            case "Decimal" : patron=/[\+\-]?(\.\d+)|(\d+\.?)|(\d+.\d+)/; break;
            case "DecimalPositivo" : patron=/\+?(\.\d+)|(\d+\.?)|(\d+.\d+)/; break;
            default : campo.focus();break;
            }
        if (!campo.value.match(patron) && campo.value != "") {
            campo.focus();
        }
    }
    /*  
    ValidaCampoTipo     ValidaCaracterTipo
    Fecha               Fecha
    Ruc                 Digito
    Dni                 Digito
    Email               Email
    Periodo             Fecha
    Digito              Digito
    Entero              Numero
    EnteroPositivo      Numero
    Decimal             Numero
    DecimalPositivo     Numero

    */

    

    function ValidaCampoPatron(campo,patron) {
        if (!campo.value.match(patron) && campo.value != "") {
            campo.focus();
        }
    }
    function ValidaCaracterTipo(e,tipo) {
        var patron
        switch (tipo)
            {
            case "Fecha" :  patron=/[\d\/]/; break;
            case "Digito" : patron=/\d/; break;
            case "Numero" : patron=/[\d\+\-\.\,]/; break;
            case "Email" : patron=/[\w\.\-\_\@]/; break;
            default : campo.focus();break;
            }
        tecla = (document.all) ? e.keyCode : e.which;
        if (tecla == 8) return true;
        te = String.fromCharCode(tecla);
        return patron.test(te);
    }

    function ValidaCaracterPatron(evento,patron) {
        tecla = (document.all) ? evento.keyCode : evento.which;
        if (tecla == 8) return true;
        te = String.fromCharCode(patron);
        return patron.test(te);
    }

</script>
</head>
<body>
    <form id="form1" runat="server">
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"/>
    <fieldset>
        <legend>Validación de RUC</legend>
        <div>
            <asp:Label ID="Label1" runat="server" Text="Ruc :" AssociatedControlID="txtRuc"></asp:Label>
            <asp:TextBox ID="txtRuc" runat="server" Onblur="ValidaCampoTipo(this,'Ruc')" onkeypress="return ValidaCaracterTipo(event,'Digito');"  MaxLength="11"
             ></asp:TextBox>

            <asp:RegularExpressionValidator ID="valRuc" runat="server" ControlToValidate="txtRuc" Display="Dynamic"  SetFocusOnError="true"
                ErrorMessage="Ruc invalido" ValidationExpression="^\d{11}"></asp:RegularExpressionValidator>
        </div>
    </fieldset>
    <fieldset>
        <legend>Validación de Fechas</legend>
        <div>
            <asp:Label ID="Label2" runat="server" Text="Fecha (dd/mm/yyyy) :" AssociatedControlID="txtFecha"></asp:Label>
            <asp:TextBox ID="txtFecha" runat="server"  Onblur="ValidaCampoTipo(this,'Fecha')" onkeypress="return ValidaCaracterTipo(event,'Fecha');"  MaxLength="10" ></asp:TextBox>
            <asp:ImageButton ID="ibfechainicio" ImageUrl="~/Images/cal.gif" runat="server" />
            <asp:RegularExpressionValidator ID="valFecha" runat="server" ControlToValidate="txtFecha" ErrorMessage="Fecha en formato: dd/mm/yyyy"
                ValidationExpression="^(0?[1-9]|[1,2][0-9]|3[0,1])\/(0?[1-9]|1[0,1,2])\/\d{4}$"></asp:RegularExpressionValidator>
            <asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtFecha" PopupButtonID="ibfechainicio" Format="dd/MM/yyyy" >
            </asp:CalendarExtender>
        </div>
    </fieldset>

    <fieldset>
        <legend>Validación de Numeros</legend>
        <div>
            <asp:Label ID="Label3" runat="server" Text="Telefono :" AssociatedControlID="txtNumero"></asp:Label>
            <asp:TextBox ID="txtNumero" runat="server" Onblur="ValidaCampoTipo(this,'Decimal')" onkeypress="return ValidaCaracterTipo(event,'Numero');"   MaxLength="8" ></asp:TextBox>
            <asp:RegularExpressionValidator ID="valNumero" runat="server" ControlToValidate="txtNumero"
                ErrorMessage="Numero invalido" ValidationExpression="\d*"></asp:RegularExpressionValidator>
        </div>
    </fieldset>
    <fieldset>
        <legend>Validación de Email</legend>
        <div>
            <asp:Label ID="Label4" runat="server" Text="Email :" AssociatedControlID="txtEmail"></asp:Label>
            <asp:TextBox ID="txtEmail" runat="server"  Onblur="ValidaCampoTipo(this,'Email')" onkeypress="return ValidaCaracterTipo(event,'Email');"></asp:TextBox>
            <asp:RegularExpressionValidator ID="valEmail" runat="server" ControlToValidate="txtEmail"    
                ErrorMessage="Formato incorrecto de Email" 
                ValidationExpression="^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$"></asp:RegularExpressionValidator>
        </div>
    </fieldset>
    <fieldset>
        <legend>Validación de Periodos</legend>
        <div>
            <asp:Label ID="Label5" runat="server" Text="Periodo (mm/yyyy):" AssociatedControlID="txtPeriodo" ></asp:Label>
            <asp:TextBox ID="txtPeriodo" runat="server" Onblur="ValidaCampoTipo(this,'Periodo')" onkeypress="return ValidaCaracterTipo(event,'Fecha');"  MaxLength="7" ></asp:TextBox>
            <asp:RegularExpressionValidator ID="valPeriodoIni" runat="server" ControlToValidate="txtPeriodo"
                ErrorMessage="Periodo en formato invalido (mm/yyyy)"
                ValidationExpression="^(0?[1-9]|1[0,1,2])\/\d{4}$"
                ></asp:RegularExpressionValidator>
        </div>
    </fieldset>
    <fieldset>
        <div>
            <asp:Button ID="btnSubmit" runat="server" Text="Submit" 
                onclick="btnSubmit_Click" />
        </div>
    </fieldset>
    </form>
</body>
</html>
